package com.ymx.darling.executor.mapping.relation.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 关联一对多关系
 * 在一的一方使用该注解, 被标注的字段必须为List或其实现类
 * @author 爱Java的小于
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RelationOneToMany {
    /**
     * 选定要查询的字段
     * @return String[]
     */
    String[] selectColumns() default {};

    /**
     * 指定当前实体的字段名
     * @return String
     */
    String selfField() default "";

    /**
     * 指定目标实体的字段名
     * @return String
     */
    String targetField();

    /**
     * 关联中额外添加的条件, 条件的参数详见{@code QuerySetting中的参数设置}
     * @return String
     */
    String condition() default "";

    /**
     * 关联数据后的排序,例如: name Asc
     * @return String
     */
    String orderBy() default "";

    /**
     * 制定关联的目标表实体类
     * @return Class
     */
    Class<?> targetClass() default Void.class;
}
